# -*- coding: utf-8 -*-
# @Time    : 2020/6/4 8:11
# @Author  : Elliott Zheng
# @Email   : admin@hypercube.top
# @File    : register.py
# @Software: PyCharm

# 添加到桌面右键菜单
# 参考 https://github.com/dnxbjyj/py-project/tree/master/AddWinContextMenu
# https://stackoverflow.com/questions/43145268/add-right-click-context-menu-only-in-desktop
import winreg as reg

import ctypes, sys


def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False


def add_desktop_context_menu(command):
    """
    添加右键菜单，打印'Hello World'
    :return:
    """
    # 菜单名称，如果含有中文，需要采用GBK编码格式，否则会出现乱码
    menu_name = "Gleaner"
    # 点击菜单所执行的命令
    menu_command = command

    # 打开名称为'HEKY_CLASSES_ROOT\\Directory\\Background\\shell'的注册表键，第一个参数为key，第二个参数为sub_key
    # 函数原型：OpenKey(key, sub_key, res = 0, sam = KEY_READ)
    # 注：路径分隔符依然要使用双斜杠'\\'
    key = reg.OpenKey(
        reg.HKEY_CLASSES_ROOT, r"DesktopBackground\\shell", 0, reg.KEY_ALL_ACCESS
    )

    # 为key创建一个名称为menu_name的sub_key，并设置sub_key的值为menu_name，数据类型为REG_SZ即字符串类型，后面跟的'(&H)'表示执行该sub_key的快捷键
    # 函数原型：SetValue(key, sub_key, type, value)
    reg.SetValue(key, menu_name, reg.REG_SZ, menu_name + "(&H)")

    # 打开刚刚创建的名为menu_name的子键
    sub_key = reg.OpenKey(key, menu_name)
    # 为sub_key添加名为'command'的子键，并设置其值为menu_command，数据类型为REG_SZ字符串类型
    reg.SetValue(sub_key, "command", reg.REG_SZ, menu_command)

    # 关闭sub_key和key
    reg.CloseKey(sub_key)
    reg.CloseKey(key)

    # print(sys.argv)
    # input("sdads")


if __name__ == "__main__":
    register("what")
